/**
 * Copyright (C), 2020, 安徽贝慕信息科技有限公司
 * FileName: MybatisPlusExtendConfig
 * Author:   Allen
 * Date:     2020/8/12 14:38
 * Description: 增加乐观锁配置信息
 * History:
 * <author>          <time>          <version>          <desc>
 * 作者姓名           修改时间           版本号              描述
 */
package com.bim.marvel.config.mybatisplus;

import com.baomidou.mybatisplus.core.parser.ISqlParser;
import com.baomidou.mybatisplus.extension.parsers.BlockAttackSqlParser;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.ArrayList;
import java.util.List;

/**
 * 〈增加乐观锁配置信息〉
 *
 * @author Allen
 * @date 2020/8/12
 * @since 1.0.0
 */
@Configuration
@MapperScan(MybatisPlusConfig.OPENAPI_PACKAGE)
public class MybatisPlusConfig {

    /**
     * 探索者dao包名
     */
    static final String OPENAPI_PACKAGE = "com.bim.marvel.openapi.core.dao";

    /**
     * 分页插件
     *
     * @return 分页拦截器
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
        //加入了攻击 SQL 阻断解析器(作用:阻止恶意的全表更新删除)
        List<ISqlParser> sqlParserList = new ArrayList<>();
        // 攻击 SQL 阻断解析器、加入解析链
        sqlParserList.add(new BlockAttackSqlParser());
        paginationInterceptor.setSqlParserList(sqlParserList);
        return paginationInterceptor;
    }
}
